package com.deng.framework.beans.factory.support;

import com.deng.framework.beans.BeansException;
import com.deng.framework.beans.factory.config.BeanDefinition;

import java.lang.reflect.Constructor;

/**
 * 实例化策略的接口
 */
public interface InstantiationStrategy {
    /**
     * 实例化接口
     * @param beanDefinition bean的包装类，装有对应的class
     * @param beanName bean的名称
     * @param ctor class对应的构造函数
     * @param args 需要传入的参数
     * @return class对应的实例
     * @throws BeansException 自定义的异常
     */
    Object instantiate(BeanDefinition beanDefinition, String beanName, Constructor ctor, Object[] args) throws BeansException;
}
